package com.ansion.commonchat.startup.workmanager.bwork.impl.mode;

/**
 * Created by wanghongjie on 2023/7/18
 * Describe :  API类，这是自定义的一个Dao， WorkManager 并不存在。
 * <p>
 * 用于记录哪些 work 被监听，存储被监听的work及监听者，目前仅用于状态变更时，遍历通知对应监听者。
 * <p>
 * 存储、通知， 后续待扩展...
 */
public interface BWorkCallbackDao {
    /**
     * 存入监听，包括监听者和被监听的WorkId。
     * <p>
     * 后续扩展：可批量传入WorkId监听。
     *
     * @param workCallback 包裹上述信息的Object。
     */
    void insertWorkCallback(BWorkCallback workCallback);

    /**
     * 清除指定监听
     */
    void deleteWorkCallback(long workListenerId);

    /**
     * 收到全量的work state 状态变更，然后内部根据存储的匹配，然后判断是否发通知
     *
     * @param workId 状态变更的Work的WorkId
     */
    void notifyWorkStateChange(String workId);

    void logout();
}
